(define (make-unbound! var env)
  (let ((frame (first-frame env)))
    (define (scan pre-vars pre-vals vars vals)
      (cond ((null? vars)
             (error "Unbound variable!" var))
            ((eq? (car vars) var)
             (set-cdr! pre-vars (cdr vars))
             (set-cdr! pre-vals (cdr vals)))
            (else
             (scan (cdr pre-vars) (cdr pre-vals) (cdr vars) (vdr vals)))))
    (let ((vars (frame-variables frame)) (vals (frame-values frame)))
      (if (eq? (car vars) var)
          (set-car! env (make-frame (cdr vars) (cdr vals)))
          (scan vars vals (cdr vars) (cdr vals))))))